
package carmadness.view;

import java.awt.Graphics;
import java.awt.Graphics2D;
import java.awt.geom.AffineTransform;
import java.util.Stack;

/**
 * Grafikus renderelést végző osztályok őse.
 * 
 * @author arpi
 * @version 1.0
 * @created 10-Apr-2010 2:32:39 PM
 */
public abstract class GraphicRenderer extends Renderer
{
	/**
	 * Hivatkozás arra a Graphics-ra, amire rajzolni szeretnénk az adott
	 * objektumot.
	 */
	protected static Graphics2D graphics;

	/**
	 * Aktuális transzformációs mátrix a stack tetejére elmenthető.
	 */
	protected static Stack<AffineTransform> transformStack = new Stack<AffineTransform>();

	protected static void pushTransform()
	{
		transformStack.push( graphics.getTransform() );
	}

	protected static void popTransform()
	{
		graphics.setTransform( transformStack.pop() );
	}

	/**
	 * Beállítja a grafikus objektumot amin a leszármazott osztályok render
	 * metódusai a rajzolást végzik.
	 * 
	 * @param gr
	 *            A grafikus objektum.
	 */
	public static void setGraphics( Graphics gr )
	{
		graphics = (Graphics2D)gr;
	}
}
